The process of correcting the bugs in a computer program is referred to as “debugging.” The efficiency of the debugging process is greatly improved if each bug can be reproduced. Reproducing a bug generated in response to user-driven events requires that the user know the exact sequence of events that were performed that caused the bug to occur. Sometimes a bug results from the culmination of many events happening in a particular sequence that can be nearly impossible for a user to remember. The steps for reproducing a bug are often referred to as the “repro steps.”
To complicate the debugging process even further, the person experiencing the bug may not be the same individual who will attempt to debug the program. Therefore, the person experiencing the bug conveys the sequence of events to the person who will debug the application. Conveying the sequence of events requires not only that the person experiencing the bug recall each of the events, but also that each event be conveyed accurately. If the person forgets a particular user-driven event or forgets the order of events, then the user-driven events will not be adequately reproducible. As a result, the bug may not be corrected.
Previous software solutions exist that are capable of recording user-driven events within an application program. These previous solutions suffer from a number of significant limitations, however, that impact their usefulness.